/* 
 * File:   BruitPerlin.h
 * Author: dang
 *
 * Created on 5 juin 2010, 23:50
 */

#ifndef _BRUITPERLIN_H
#define	_BRUITPERLIN_H

#include <vector>

#include "Fractal.hpp"

class BruitPerlin : public Fractal {
	std::vector<std::vector<int> > random;
	int frequence;
	int octaves;
	std::vector<int> frequences;
	std::vector<float> persistances;
	int width;
        int height;
	float persistance;
	float sum_persistance;
	unsigned char aleatoire(float a);
public:
	int obtenirPixel(int valeur);
	int valeur_interpolee(int i, int j, int frequence) const;
	//Calque* get_random();
	float get_sumpersitance() const;
	std::vector<int> get_frequences() const;
	std::vector<float> get_persistances() const;
	int get_octaves() const;
	int obtenirPixel(int x, int y);
	void initPerlin1D(int t, int p, int n);
	double bruit_de_perlin2D(double x, double y, double persistance, int nombre_octaves);
	Uint32 obtenirCouleur(double gris);
	Uint32 obtenirCouleurjolie(double rouge, double vert, double bleu);
	BruitPerlin(int width, int height, float persistance, int octaves, int frequence, int xmin, int xmax, int ymin, int ymax);
	virtual ~BruitPerlin();
        Uint32 compute(const double, const double) const;
};

#endif	/* _BRUITPERLIN_H */

